home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / progjour / 1991 / 04 / putbytes.asm < prev    next >
Assembly Source File  |  1991-04-17  |  1KB  |  59 lines

  1.     title    put multiple bytes
  2.     include    asm.inc
  3.  
  4.     public    put_multiple_bytes
  5.  
  6.     .code
  7.     extn    putchar,putchar_space,put_hex_byte,putchar_newline
  8.  
  9. ;;    put multiple bytes
  10. ;
  11. ;    entry    CX    byte count
  12. ;        DS:SI    byte pointer
  13. ;    uses    AX,CX,SI
  14. ;
  15. put_multiple_bytes proc
  16.     jcxz    pmb9            ;  if no bytes to display
  17. pmb1:    cmp    cx,16
  18.     jbe    pmb2            ;  if <16 bytes, display and return
  19.  
  20.     push    cx            ;  else display next 16 bytes
  21.     mov    cx,16
  22.     call    pmb2
  23.     pop    cx
  24.     sub    cx,16
  25.     jmp    pmb1            ;   and continue
  26.  
  27. pmb2:    push    dx            ; display bytes in hex
  28.     mov    dx,cx
  29. pmb3:    lodsb
  30.     call    put_hex_byte
  31.     mov    al,' '
  32.     call    putchar
  33.     loop    pmb3
  34.     sub    si,dx
  35.  
  36.     mov    cx,16            ; space over so ASCII lines up
  37.     sub    cx,dx
  38.     jcxz    pmb5
  39. pmb4:    call    putchar_space
  40.     call    putchar_space
  41.     call    putchar_space
  42.     loop    pmb4
  43.  
  44. pmb5:    mov    cx,dx            ; display bytes in ASCII
  45. pmb6:    lodsb
  46.     cmp    al,' '            ;  use period for control characters
  47.     jb    pmb7
  48.     cmp    al,'~'
  49.     jbe    pmb8
  50. pmb7:    mov    al,'.'
  51. pmb8:    call    putchar
  52.     loop    pmb6
  53.     call    putchar_newline
  54.     pop    dx
  55. pmb9:    ret
  56. put_multiple_bytes endp
  57.  
  58.     end
  59.